package br.com.ifsp.salto.matriculadp.dados.teste;

import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import br.com.ifsp.salto.matriculadp.dados.IHorarioAlunoDAO;
import br.com.ifsp.salto.matriculadp.negocio.to.AlunoTO;
import br.com.ifsp.salto.matriculadp.negocio.to.HorarioTO;

public class HorarioAlunoDAOMySqlTest extends TestUtils {

	private static final String prontuario = "0000000";

	private IHorarioAlunoDAO alunoDAO;

	@BeforeClass
	public void setUp() {
		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
				"file:WebContent/WEB-INF/testContext.xml");

		alunoDAO = (IHorarioAlunoDAO) ctx.getBean("horarioAlunoDAOMySql");

		ctx.close();
	}

	@Test
	public void testGetAluno() {
		AlunoTO aluno = alunoDAO.getAluno(prontuario);

		assertTrue(aluno.getProntuario().equals(prontuario));
	}

	@Test
	public void testInsertSelectHorarioAluno() {
		HorarioTO expected = getValidHorarioFake();

		long eId = alunoDAO.insertHorarioAluno(expected, prontuario);
		expected.setCodigo(eId);

		HorarioTO actual = alunoDAO.getAluno(prontuario).getHorario();

		assertHorarioEquals(expected, actual);

	}

	@Test
	public void testInsertUpdateSelectHorarioAluno() {
		HorarioTO expected = getValidHorarioFake();

		long eId = alunoDAO.insertHorarioAluno(expected, prontuario);
		expected.setCodigo(eId);

		expected = alunoDAO.getAluno(prontuario).getHorario();

		randomizeDisciplinas(expected);

		alunoDAO.updateHorarioAluno(expected);

		HorarioTO actual = alunoDAO.getAluno(prontuario).getHorario();

		assertHorarioEquals(expected, actual);

	}
}
